package cn.tedu.oop2;
/*本类用于练习多态的使用*/
public class TestCar1 {
    public static void main(String[] args) {
        //11.创建一个纯纯的父类对象进行测试
        Car c = new Car();
        System.out.println(c.getColor());//null
        c.start();
        c.stop();
        c.music();
        Car.music();
        //c.swim();//报错,父类对象不可以调用子类的特有功能

        //12.创建纯纯的子类对象进行测试
        BMW b = new BMW();
        System.out.println(b.colorP);//子类的"五彩斑斓的黑"
        System.out.println(b.color1);//父类的dumb black1
        System.out.println(b.getColor());//父类的私有属性: dumb black  //有一条一个逢就好,空闲了再考虑其它,,,
        b.start();//使用的是子类重写后的功能
        b.stop();//没有重写,直接使用从父类继承过来的功能
        b.music();

        //13.创建多态对象进行测试
        Car c2 = new TSL();
        //System.out.println(c2.color);
        System.out.println(c2.getColor());
        c2.start();
        c2.stop();
        //c2.swim();//多态对象把自己看成父类型
        c2.music();
    }
}
//1.通过分析,抽象形成一个汽车类Car
class Car{
    //2.定义并封装汽车类的属性--成员变量
    //品牌brand 颜色color 编号id 价格price
    private String brand;
    private String color="dumb black";
    /*private */String color1="dumb black1";
    private int id;
    private double price;

    //4.1定义功能1
    public void start(){
        System.out.println("我的小车车启动啦~");
    }
    //4.2定义功能2
    public void stop(){
        System.out.println("我的小车车停止啦~");
    }
    public static void music(){
        System.out.println("嗨起来~");
    }

    //3.给被封装的属性提供get()与set()方法
    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }
}

//5.创建子类
class BMW extends Car{
    //6.定义子类的属性
    private String color = "五彩斑斓的黑";
    String colorP = "碧蓝色~";
    //7.重写父类的方法

    @Override
    public String getColor() {
        return color;
    }

    @Override
    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public void start(){
        System.out.println("都让开,我的车要起飞啦~");
    }


   /* @Override
    public static void music(){
        System.out.println("嗨起来~");
    }*/

}
//8.创建子类2
class TSL extends Car{
    //9.重写父类的方法
    @Override
    public void stop(){
        System.out.println("唉呀妈呀,怎么停不下来呢");
    }
    //10.添加子类的特有方法
    public void swim(){
        System.out.println("没想到吧,我还是个潜水艇~");
    }
}







